package cn.tedu.account;

import com.zaxxer.hikari.HikariDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

/**
 * 事务自动配置类，创建数据源代理对象
 * 自定义的数据源自动配置类与spring中默认的数据源自动配置类冲突
 * 需要在启动类中排除spring默认的自动配置
 */
@Configuration
public class DSAutoConfiguration {
    //创建原始数据源对象
    //Hika使用的数据库地址参数不是url,而是jdbcurl
    @ConfigurationProperties(prefix = "spring.datasource")//注入连接池参数，前缀
    @Bean
    public DataSource dataSource() {
        return new HikariDataSource();
    }
    //创建数据源代理对象
    @Primary//首选对象，spring di依赖注入不知道注入哪个对象时，使用此注解
    @Bean
    public DataSource dataSourceProxy(DataSource ds){
        return new DataSourceProxy(ds);//为被代理的目标对象创建代理对象
    }
}
